iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0

那些背叛我的權重

第二版的蒙古照片精選出來,我看完的第一個感覺是人物太多了。自拍一張接一張,把精選名額吃掉不少。

我記得我的分類是大景/人物/食物/細節/其他,那就調吧。我給了很具體的數據指令:

V2 的確比 V1 有人味一點。但人物 1.25 的確太高,以蒙古行程的特質,我會希望大景 +25%、其他 +10%、細節 +0%、人物 +15%

翻成白話:人物從加 25% 降到加 15%,大景從原本拉到加 25%。人物那一格,我只動了 10%。

結果出來,大景 45 張,人物 7 張。

人物呢

那個拉著馬頭琴唱曲子的大姐呢?我騎車騎到快死掉、停在路邊幫自己拍的那張呢?怎麼一張都沒有?

我第一個反應是 CC 你是不是亂選一通。

然後我想起來,是我自己調的。

我只把人物往下動了 10%,人物就從洗版變成幾乎消失。同一批照片、同一套規則,中間只差那一個小數點。

數據人無法否認的尷尬事實

CC 給的解釋讓我停下來想了一陣子:

這些照片的美學分數很集中,都擠在 0.5 到 0.8 之間,所以權重差 10% 會大幅翻轉選片。這代表光靠調權重是個不穩定的控制桿。

我記得我的邏輯:權重與分數,同樣的權重下,挑分數高的。
但如果分數都一樣好也一樣爛呢?分數區間這麼窄,權重乘一下就跨過好幾張照片的名次。
我調的不是偏好,是在洗牌。

補充一下前面提過的:Apple 的 Vision Framework 會幫照片打美學分數,範圍是負一到正一。
但一般人拍的旅遊照幾乎都落在中間偏上那一小段,真正的神作跟真正的爛片都很少。分母很窄,任何乘法都會被放大。

先搞懂我一直誤會的一件事

寫到這裡我才發現,我從頭到尾把權重想成配額。

它不是。權重是乘在分數上的。

每張照片先有一個美學分數,權重乘上去變成加權分數,所有照片照加權分數排隊,然後才套每日配額(當天照片數的 15%,最少 2 張、最多 8 張)跟同主題單日上限。

所以我調權重,調的是排隊順序,不是「大景分到幾個名額」。

算式長這樣:

加權分數 = (美學分數 + 1) × 權重

先加 1 是因為美學分數可能是負的,負數乘權重會愈乘愈小,方向會整個反掉。加 1 之後範圍變成 0 到 2,乘法才乖。

假設一張大景跟一張人物,Vision 給的分數一模一樣都是 0.70:

  • 大景:(0.70 + 1) × 1.25 = 2.125
  • 人物:(0.70 + 1) × 1.15 = 1.955

同分的兩張,排隊的時候大景站前面。

然後我反過來問了一個問題:人物照要拿幾分,才追得上同一批大景?

大景的分數 人物要拿到 要多拿
0.50 0.63 0.13
0.60 0.74 0.14
0.70 0.85 0.15
0.80 0.96 0.16

一張 0.70 分的大景,人物照要 0.85 分才追得上。而所有照片都擠在 0.5 到 0.8 之間,整個區間只有 0.3 分寬。要多拿 0.15 分,等於要跨過半個區間。

再看最後一列。大景 0.80 的話,人物要 0.96,那個分數根本不存在,沒有人的旅遊照拿得到 0.96。

這就是 45 比 7 的來源。不是 CC 亂選,是我那組權重在數學上等於跟人物照說:你要比大景好半個區間,才有資格進來。

還有一件事我也是這時候才看懂:最右邊那欄的差距是會變大的,0.13、0.14、0.15、0.16。乘法的特性是分數越高,同樣的權重差拉開越多。 在正常的分數分布下這很合理,但在「大家分數都差不多」的分布下,它就變成放大器。

怎麼辦

我跟 CC 來回討論幾次,它給了三個比權重穩的做法。

一、旅程自適應權重。 自動精選開跑前,先統計這趟的主題分布,跟一組基準值比,用全域口味搭配阻尼公式修正,最多減 15%、最多加 30%。

白話說就是,不管這趟大景拍再多,它的權重最多就是基準的 1.3 倍;拍再少,也還有 0.85 倍。天花板跟地板都先釘死,中間才由阻尼決定。

蒙古大景拍了 65%,基準是 45%,照抄比例要加 44%,阻尼壓完只加 14%。這就是「不完全按拍照比重」。

注意這跟我手調的那個 25% 是兩件事,它們是相乘的兩層:全域口味是我對所有旅程的偏好,旅程修正只管這一趟。

二、重要人物加成。 認出橫跨多天出現的臉當同行者,我確認一次之後,他們出現的照片乘 1.03。只有 3%,有加分,但不會壓過別人。這個數字小得很刻意:讓爸媽或旅伴的照片多一點機會,但不會蓋過別人。

三、同主題單日上限。 一天同一個主題最多 5 張。這是硬規則,它管的是結果分布,所以自拍或大景再美再高分,也洗不了版。

阻尼在幹嘛

阻尼這個詞從物理來的,就是避震器在做的事:輸入變大,輸出跟著變大,但變得比較少,而且有上限。

實際跑幾個數字,最右邊那欄才是真正用上的權重:

主題 這趟占比 基準 照抄比例 阻尼壓完 實際權重 誰決定的
大景(蒙古) 65% 45% 1.44x 1.14 1.14 阻尼
大景(都市旅行) 20% 45% 0.44x 0.75 0.85 地板接住
細節 30% 15% 2.00x 1.27 1.27 阻尼
人物 5% 15% 0.33x 0.68 0.85 地板接住
食物(蒙古,13 張) 0.5% 10% 0.05x 0.35 0.85 地板接住

地板和天花板不是對稱的。

地板 0.85 是硬性設定,一條線畫在那裡。阻尼算出多低都沒用,只要低於 0.85 就拉回 0.85。食物那列算出 0.35,直接被接住。

天花板那一側要過兩關。第一關是阻尼,占比再高也先往下壓一次,細節拍了基準的兩倍,壓完剩 1.27。第二關才是 1.30 的硬天花板,壓完還是超過的才會被擋在 1.30。

所以這張表五列裡,三列的答案是地板給的,兩列是阻尼給的,天花板一次都沒用上。

(順帶一提,食物那列「阻尼壓完」剛好也是 0.35,跟阻尼公式裡那個指數同一個數字,純屬巧合。)

最後一列最能說明那個上下限在幹嘛。蒙古整趟的食物拍得少,據說只拍了 13 張食物(怎麼可能),照抄比例的話食物權重要砍到剩 5%,等於「這趟不准出現食物照」。設了下限之後只砍 15%,那 13 張裡最好的一兩張還是有機會進故事書,整本才不會缺一整個面向。

這跟我先前拍板的覆蓋率是同個立場:五大主題都要盡量涵蓋,不是硬按比例分配。

還有一件事必須誠實講。我後來問 CC,阻尼那個係數是怎麼來的,答案是沒有推導,是挑出來的。照抄比例會加 44%,開根號會加 20%,挑的那個值加 14%,看起來剛好合理。

所以我整篇在講「權重是不穩定的控制桿」,而拿來壓住它的那個係數,本身也是憑手感挑的。
真正救命的其實不是那個係數,是外面那個「最多加三成、最少打八五折」的硬上限。

最後我把控制桿交回去給用戶

不但讓用戶自己挑每個主題的權重,還給他一組看得懂的選項:精選比例做成三檔預設選項(精簡 10%、標準 15%、豐富 25%),口味頁的權重從儀表改成滑桿,旁邊寫清楚兩者會疊加。

目的是讓常用的用戶有一套簡單易懂的方法挑照片,不用理解後面那三層在算什麼。

心得

  • 我以為得數字者得一切,調參數能調出想要的結果。卻忘了考慮數字分布。當分數分布很擠,參數不是控制桿,是洗牌機。
  • 真正的控制桿有兩種:管結果分布的硬規則,和使用者自己的手。
  • 還有一種安慰劑:看起來很精密、其實是憑手感挑的參數。它不一定有害,但別把它當成理由。

這個系列同步寫在我的部落格:yojuhsu.com/blog

前一篇:【Day17】我以外的人看到了什麼?
下一篇:【Day19】AI 叫我去刷卡?所以我找了第三方來檢查


上一篇
【Day17】我以外的人看到了什麼?
下一篇
【Day19】AI 叫我去刷卡?所以我找了第三方來檢查
系列文
AI 沒有消滅專業:不寫 code 上架四個 App 的商業分析師,30 天拆給你看 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言